# -*-coding:utf8-*-

import numpy as np
import cv2

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye_tree_eyeglasses.xml')
smile_cascade = cv2.CascadeClassifier('haarcascade_smile.xml')

img = cv2.imread("test5.jpg")
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

faces=face_cascade.detectMultiScale(
	gray,
	scaleFactor = 1.15,
	minNeighbors = 6,
	minSize = (5,5),
	flags = cv2.CASCADE_SCALE_IMAGE,
)

if len(faces)>0:
	for faceRect in faces:
		x,y,w,h = faceRect
		cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2,8,0)
		roi_gray = gray[y:y+h,x:x+w]
		roi_color = img[y:y+h,x:x+w]

		eyes = eye_cascade.detectMultiScale(roi_gray,1.1,5,cv2.CASCADE_SCALE_IMAGE,(2,2))
		for (ex,ey,ew,eh) in eyes:
			cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),3)

		smile = smile_cascade.detectMultiScale(roi_gray,1.1,30)
		for (ubx,uby,ubw,ubh) in smile:
			cv2.rectangle(roi_color,(ubx,uby),(ubx+ubw,uby+ubh),(0,0,255),3)
cv2.imshow("img",img)
cv2.waitKey(0)